/**
 * Created by yudong on 2017/6/15 0015.

 与 ECMAScript 中的其他操作符一样，当关系操作符的操作数使用了非数值时，也要进行数据转换或完成某些奇怪的操作。以下就是相应的规则。
  如果两个操作数都是数值，则执行数值比较。
  如果两个操作数都是字符串，则比较两个字符串对应的字符编码值。
  如果一个操作数是数值，则将另一个操作数转换为一个数值，然后执行数值比较。
  如果一个操作数是对象，则调用这个对象的 valueOf() 方法，用得到的结果按照前面的规则执行比较。如果对象没有 valueOf() 方法，则
 调用 toString() 方法，并用得到的结果根据前面的规则执行比较。
  如果一个操作数是布尔值，则先将其转换为数值，然后再执行比较。根据规则，任何操作数与 NaN 进行关系比较，结果都是 false。

 ECMAScript 中的相等操作符由两个等于号（ ==）表示，如果两个操作数相等，则返回 true。而不相等操作符由叹号后跟等于号（ !=）表示，
 如果两个操作数不相等，则返回 true。这两个操作符都会先转换操作数（通常称为强制转型），然后再比较它们的相等性。
 在转换不同的数据类型时，相等和不相等操作符遵循下列基本规则：
  如果有一个操作数是布尔值，则在比较相等性之前先将其转换为数值——false 转换为 0，而true 转换为 1 ；
  如果一个操作数是字符串，另一个操作数是数值，在比较相等性之前先将字符串转换为数值；
  如果一个操作数是对象，另一个操作数不是，则调用对象的 valueOf() 方法，用得到的基本类型值按照前面的规则进行比较；
 这两个操作符在进行比较时则要遵循下列规则。
  null 和 undefined 是相等的。
  要比较相等性之前，不能将 null 和 undefined 转换成其他任何值。
  如果有一个操作数是 NaN，则相等操作符返回 false，而不相等操作符返回 true。重要提示：即使两个操作数都是 NaN，相等操作符也返回
 false；因为按照规则， NaN 不等于 NaN。
  如果两个操作数都是对象，则比较它们是不是同一个对象。如果两个操作数都指向同一个对象，则相等操作符返回 true；否则，返回 false。

 除了在比较之前不转换操作数之外，全等和不全等操作符与相等和不相等操作符没有什么区别。全等操作符由 3 个等于号（ ===）表示，它只在
 两个操作数未经转换就相等的情况下返回 true
 */
console.log(NaN < 2);
console.log(NaN > 2);
console.log("a" > 2);